package com.gxa.user.dao;


import com.gxa.user.dto.Keywords;
import com.gxa.user.dto.MyParam;
import entity.City;
import entity.Member;
import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.omg.CORBA.INTERNAL;

import java.util.List;

/**
 * (Member)表数据库访问层
 *
 * @author makejava
 * @since 2021-05-10 19:01:12
 */
@Mapper
public interface MemberDao {

    /**
     * 通过ID查询单条数据
     *
     * @param memberId 主键
     * @return 实例对象
     */
    Member queryById(Integer memberId);

    /**
     * 通过实体作为筛选条件查询
     *
     * @param member 实例对象
     * @return 对象列表
     */
    List<Member> queryAll(Member member);

    /**
     * 新增数据
     *
     * @param member 实例对象
     * @return 影响行数
     */
    int insert(Member member);


    /**
     * 修改数据
     *
     * @param member 实例对象
     * @return 影响行数
     */
    int update(Member member);

    /**
     * 通过主键删除数据
     *
     * @param memberId 主键
     * @return 影响行数
     */
    int deleteById(Integer memberId);


    /**
     * 查询所有，带分页
     */
    List<Member> findAll(@Param(value = "param") MyParam param);


    /**
     * 查询所有，不带分页
     */
    List<Member> findAllNoPage();

    /**
     * 删除用户，软删除
     */
    int delete(Integer memberId);
    /**
     * 禁用用户
     */
    int disable(Integer memberId);
    /**
     * 启用用户
     */
    int able(Integer memberId);
    /**
     * 根据id查询用户是否存在，返回对象
     */
    Member query(Integer id);
    /**
     * 根据传入对象，判断传入信息是否存在
     */
    Member queryMember(Member member);
    /**
     * 根据关键字查询
     */
    List<Member> queryByKeywords(@Param(value = "keywords") Keywords keywords);

    /**
     * 根据用户id查询所有信息，包括角色等
     */
    Member findAllByTt(Integer memberId);

    /**
     * 根据用户id查询所有信息，包括角色等
     */
    Member findAllById(Integer memberId);

    /**
     * 查管理员邮箱
     */
    String selectEmail();

    /**
     * 根据部门id和角色id查询
     */
    Member findByDeptIdAndRoleId(Integer deptId,Integer roleId);

    /**
     * 查询总经理
     */
    Member findBoss();

    /**
     * 根据城市Id查城市
     */
    City findByCityId(Integer cityId);


    /**
     * 查询城市和城市Id
     */
    List<City> findCityAndCityId();

    /**
     * 改密码
     */
    int updatePwd(Integer memberId,String newPwd);

    /**
     * 设置用户为常用旅客
     */
    int updateUsual(Integer memberId,Integer isUsual);

    /**
     * 上传头像
     */
    int updateImg(Integer memberId,String url);
}

